package cn.buk.api.shdl.request.dto;

import cn.buk.api.shdl.dto.MyLocalDate;
import cn.buk.api.shdl.dto.MyLocalTime;

import java.util.ArrayList;
import java.util.List;

public class RequestSegment {

  /**
   * 始发地
   * 支持邻近城市/机场搜索，最多5 个,
   * 不能为空
   */
  private List<RequestAirport> origin;

  /**
   * 目的地
   * 支持邻近城市/机场搜索，最多5 个，
   * 不能为空
   */
  private List<RequestAirport> destination;

  /**
   * 出发日期
   */
  private MyLocalDate departureDate;

  /**
   * 在...时间之后出发
   * 用户可以设置出发的时间范围，可以不设置，默认为00：00
   */
  private MyLocalTime departAfterTime;

  /**
   *在...时间之前出发
   * 用户可以设置出发的时间范围，可以不设置，默认为23：59
   */
  private MyLocalTime departBeforeTime;


//  灵活的日期范围，用于Calendar
//  Shop,可以不设置。航司单程可支持2
//  个月的日历，往返为7*7，代理人原
//  则上只支持单程7 天和往返7*7
//  flexInterval

//  array 中转点信息
//  可以不设置。若设置了多个中转点，
//  中转点之间的关系为AND
//  connectionLocations

//  array 航班舱位信息
//  全舱位查询时使用，从第一次最低价
//  查询结果的flights 中获取(依据id 查
//找对应的flight)
//  flights


  /**
   * 旅客偏好信息
   * 此处的Preferences 限制的是一个Segment，可以为空，表示无偏好
   */
  private List<PassengerPreference> preferences;

  public List<RequestAirport> getOrigin() {
    if (origin == null) {
      origin = new ArrayList<>();
    }
    return origin;
  }

  public void setOrigin(List<RequestAirport> origin) {
    this.origin = origin;
  }

  public List<RequestAirport> getDestination() {
    if (destination == null) {
      destination = new ArrayList<>();
    }
    return destination;
  }

  public void setDestination(List<RequestAirport> destination) {
    this.destination = destination;
  }

  public MyLocalDate getDepartureDate() {
    return departureDate;
  }

  public void setDepartureDate(MyLocalDate departureDate) {
    this.departureDate = departureDate;
  }

  public MyLocalTime getDepartAfterTime() {
    return departAfterTime;
  }

  public void setDepartAfterTime(MyLocalTime departAfterTime) {
    this.departAfterTime = departAfterTime;
  }

  public MyLocalTime getDepartBeforeTime() {
    return departBeforeTime;
  }

  public void setDepartBeforeTime(MyLocalTime departBeforeTime) {
    this.departBeforeTime = departBeforeTime;
  }

  public List<PassengerPreference> getPreferences() {
    return preferences;
  }

  public void setPreferences(List<PassengerPreference> preferences) {
    this.preferences = preferences;
  }
}
